专利摘要:
本案揭示了一種用於減少用於字型的字型執行指令並藉此減少字型的檔案大小的技術及/或系統。可(例如,藉由檢查表)掃描字型執行指令,以識別字型執行指令中的一或更多共用指令集。可針對共用指令集定義函數,並且在字型執行指令中之共用指令集的實例(instance)或外觀(appearance)可用函數調用來替換。因為調用通常小於調用所替換的共用指令集(例如,調用包含較少的代碼行),所以減少了用於字型的執行指令的數量。
公开号:TW201308206A
申请号:TW100136562
申请日:2011-10-07
公开日:2013-02-16
发明作者:Paul Linnerud;Gregory Hitchcock
申请人:Microsoft Corp;
IPC主号:G06F40-00
专利说明:
減少字型指令
本發明係關於減少字型指令。
在計算環境中,電腦字型可包含特定字體的字元式樣(例如,文數字元(alphanumeric characters))。電腦字型通常可按比例縮放為較大或較小的大小、加粗及/或傾斜,同時保持字型的字體式樣。字型的特徵可包括筆劃寬度(字體粗細)、字元傾角或字元角,以及字元寬度(例如,以及字元高度)。使字型在顯示器上渲染(rendering)(例如,光柵化)的度量可包括元資料,該元資料用於描述字型之各個字元的個別字符(glyph)。電腦字型可包括程式,或者更確切而言是包括在程式內(例如,在一或更多字型檔案內),該等程式可利用程式語言來描述如何藉由光柵化部件將各個字符渲染以向使用者顯示。
提供此發明內容以用簡化形式介紹下文在實施方式中進一步描述之概念選擇。本發明內容不欲識別所主張標的之關鍵因素或基本特徵,亦不欲用以限制所主張標的之範疇。
一些電腦字型可包括一種機制,在該機制中,可調節已縮放(scaled)的字元輪廓,以在目標設備上實現期望輸出。基於運算碼(op code)的解譯語言類似於組合語言,該解譯語言可用於多種字型並且可由掃描場解析器(rasterizer)解譯,以完成調整,該調整被稱為指令或提示。在字型中,可能存在與各個字符有關的指令,以及可應用於文字大小及/或字型本身的全局指令。
一些電腦字型包括一組表,例如,其中各個表由唯一的標籤識別。字型中的字符可在字符表中定義。舉例而言,字符定義可包括與字型的各個字符一起執行的指令,以及字型輪廓的數學表徵。例如,經執行以用於各個字型大小的全局指令集可包含在預程式(pre-program)中,該預程式有時被稱為控制值程式(prep)表。例如,經執行以用於字型的另一全局指令集可被包括在字型程式(fpgm)內。所有此等指令可顯著地增加至與任何特定字型有關的一或更多檔案的大小。
因此,揭示了一或更多用於減少字型執行指令的數量的技術及/或系統,該等字型執行指令(例如)包含在一或更多字型檔案中。例如,可減少包含在針對字型的一或更多表中的指令的總容量,同時可維持用於原字型的此等指令的功能等效。例如,該等字型執行指令可包括指令集,在字型中若干處的該等指令集是相同的。因此,該等「共用」指令(例如,共用指令集)中的至少一些「共用」指令可僅由函數的少量(例如,一個或兩個,等等)線性函數調用替換,該等函數經定義用於該等共用指令集。用函數調用替換該等共用指令集(例如)可產生壓縮的字型執行指令,同時維持未壓縮字型的功能等效。
在減少用於字型的字型執行指令的一個實施例中,可識別該等字型執行指令中的一或更多共用指令集。此外,在字型中可針對已識別的共用指令集來定義函數。另外,可用對應定義函數的調用替換在字型執行指令中的已識別的共用指令集,從而引起字型執行指令集的減少。
為了達到前文所述以及其他相關目的,以下描述及附圖闡述了某些說明性的態樣以及實施方式。該等態樣以及實施方式僅指示了可使用一或更多態樣的各種方式中之幾種。在結合附圖思考以下詳細描述後,本揭示案的其他態樣、優點以及新穎特徵結構將會變得顯而易見。
現參考圖式描述所主張的標的,其中相同的元件符號通常於全文中用於代表相同的元件。在以下描述中,為便於解釋,闡述了許多特定細節,以提供對所主張標的透徹理解。然而顯然的,沒有該等特定細節亦可實踐所主張標的。在其他實例中,以方塊圖形式圖示結構及設備,以促進描述所主張標的。
如本文所提供的,可設計一種方法,該方法藉由減少(例如,合併)包含在一或更多表中(例如)用於字型的字型執行指令,來減少字型的檔案大小,同時在減少之前維持字型的功能等效。作為實例,字型可利用基於「運算碼(op-code)」的解譯語言,該解譯語言類似於組合語言,包含指令或「提示」。當字型在目標設備上渲染(rendering)時,該運算碼語言可藉由掃描場解析器解譯。字型可包括(例如)一組表,該等表分別包括字型指令(例如,字符指令及全局指令)。在本實例中,可減少(例如,在字型表中)指令的總量。
第1圖為圖示用於減少用於字型的字型執行指令的示例性方法100的流程圖。該示例性方法100自102處開始,並且在104處涉及識別字型執行指令中的共用指令集。作為實例,共用指令集可包括相同模式的指令,該等指令存在於字型執行指令中多於一個的位置。
在106處,針對共用指令集定義函數。例如,用於字型執行指令的語言可用於函數化(functionalization)指令集,該等指令集可從字型執行指令中調用。在108處,用定義函數的調用替換字型執行指令中的共用指令集。例如,在字型執行指令中的各個共用指令集位置處,可移除共用指令集並在移除位置插入定義函數的調用。如此,例如,可在複數個位置處藉由用函數調用替換指令集來減少字型執行指令。可瞭解,可重複該替換,以便僅用各個定義函數的調用替換其他共用指令集,從而進一步減少字型執行指令。
第2圖為圖示可實施本文描述的一或更多種技術的一或更多部分的示例性實施例200的流程圖。在202處,可掃描字型執行指令,以在204處識別一或更多共用指令集。在一個實施例中,共用指令集可包括一或更多共用字型執行指令(例如,共用字符執行指令)的集合,在字型執行指令中的至少兩個位置處識別出該等共用字型執行指令。作為實例,可掃描prep表,查找存在於多於一個位置處的指令,其中指令集可包括一或更多代碼行,該等代碼行用於將字型執行到目標設備上。
作為說明性實例,第3圖為圖示字型執行指令的示例性實施例300的圖式。在本實例300中,字型執行指令除了別的部分以外,還包括用於三個字符302、304、306的字符指令部分。此外,字符18(302)包含指令集308,該指令集308亦可存在於字符167(304)中的310處,以及存在於字符520(306)中的312處。相同的指令集308、310、312可包括用於字型執行指令的共用指令集。可瞭解,用於字符302、304、306的各個字型執行指令分別包括的合集多於僅集合308、310、312。亦即,為簡便、解釋等起見,僅圖示用於字符302、304、306的共用或交疊集308、310、312(例如,並未圖示用於字符302、304、306的各個字型執行指令的額外部分)。
回到第2圖,在206處,可評估對一或更多共用指令集進行壓縮(例如,用函數替換產生共用指令集)的結果,(例如)以決定壓縮是否產生字型檔案大小的期望改良,同時不會過載用於執行壓縮的計算資源。在一個實施例中,對壓縮的評估可包括當壓縮字型執行指令中的共用指令集時,決定是否達到所期望的檔案大小減少臨界值。
在208處,決定是否有期望的檔案大小減少(例如,達到減少臨界值)之步驟可包括(例如)藉由減少字型的執行指令,決定是否有檔案大小的淨減少。若未達到減少臨界值(例如,沒有淨減少)(在208處的「否」),則在212處,不對字型執行指令執行壓縮。若達到減少臨界值(在208處的「是」),則在210處可決定用於執行壓縮的計算資源成本。
在一個實施例中,決定是否達到期望的檔案大小減少臨界值之步驟可包括識別用於減少字型執行指令的大小的效能成本。在本實施例中,可將效能成本(例如,計算資源成本,諸如處理器使用、功率消耗、時間及/或實際成本等)與期望的效能成本臨界值進行比較(例如,壓縮的改良比效能成本重要)。
若效能管理費用未達到期望臨界值(在210處的「否」),則在212處不執行壓縮。若效能管理費用達到期望臨界值(在210處的「是」),則在214處可執行對一或更多共用指令集的壓縮。例如,在字型執行指令中可用定義函數替換一或更多共用指令集,以減少字型執行指令的大小。
在一個態樣中,字型可包括指令集,或者更確切而言可被包括在指令集中,該指令集包含用於定義一或更多函數的一或更多操作,諸如從操作堆疊中移除值。作為實例,TrueType字型用於至少兩個類型的函數、函數定義(FDEF)以及指令定義(IDEF)。在本實例中,FDEF包含標準函數定義,並且在功能方塊的開始處由FDEF指示;並且IDEF包含自定義(custom)指令定義,並且在自定義指令方塊的開始處由IDEF指示。此外,此兩種類型的函數均可用ENDF終止。作為說明性實例,當被調用時,FDEF從操作堆疊中移除將被用作唯一的函數編號的值;並且IDEF從該堆疊中移除將被用作自定義指令的值。另外,在本實例中,使用「CALL」指令調用標準函數,該「CALL」指令從堆疊中獲取函數編號,並且僅使用自定義指令所定義的運算碼來執行自定義指令。
第4圖為圖示可實施本文描述的一或更多種技術的一或更多部分的示例性實施例400的流程圖。在402處,可決定共用指令集450的數量是否大於字型執行指令的替換臨界值。例如,一些字型類型(例如,TrueType字型)用於數量有限的替換函數。作為實例,TrueType字型通常用於數量有限的自定義函數(IDEFs),該等自定義函數用於字型。在本實例中,若共用指令集比可用於替換的自定義函數多,則可能超出替換臨界值。
在一個實施例中,因為自定義指令的調用(例如,IDEF)可包括較少的計算管理負擔,並且可引起比標準函數的調用(例如,FDEF)更大的指令壓縮,所以在使用標準函數以前,可用自定義函數替換共用指令集。作為實例,IDEF可包括僅執行一個指令(例如,「執行自定義指令12」),而FDEF可包括執行兩個指令(例如,「將12推至堆疊上;跳轉至由頂端堆疊入口(entry)識別的函數」)。因此,在本實施例中,在達到(例如,用於自定義函數的)替換臨界值前,自定義函數可優先於標準函數,且接著可使用標準函數,(例如)用於任何剩餘的共用指令集。
在一個實施例中,自定義指令可能會被禁止用於共用指令集。例如,出於其他目的,字型程式師/供應者可利用自定義指令(例如,IDEF)。作為實例,IDEF往往用作未來指令的修補程式(patch),諸如用於字型的未來版本或更新。在本實施例中,例如,對於字型程式,禁止使用自定義指令可減輕可能的碰撞及/或問題。在一個實施例中,例如可禁止使用標準函數(例如,FDEF),並且可僅將自定義指令用於共用指令集。
在第4圖中,於404處,可優先替換共用指令集。在一個實施例中,例如對於壓縮,若達到共用指令集450的臨界數量(在402處的「是」),則第一共用指令集可優先於第二共用指令集。在一個實施例中,優先化可包括:若在字型執行指令中,與(存在於字型執行指令中的)第二共用指令集相比,第一共用指令集存在於更多的位置,則使第一共用指令集優先於第二共用指令集。在一個實施例中,優先化可包括使第一共用指令集優先,與具有較少字型執行指令的第二共用指令集相比,該第一共用指令集具有較大數量的字型執行指令。
在406處,可針對共用指令集建立函數,例如針對各個已識別的共用指令集。作為說明性實例,第5圖為圖示可實施本文描述的一或更多種技術的一或更多部分的示例性實施例500的流程圖。共用指令集502包括在字型程式中多於一個位置處,或在用於多個字符的各個字型執行指令(例如,第3圖中用於字符302、304、306的指令)中可能已經識別的字型執行指令。此外,在本示例性實施例500中,可針對共用指令集502建立函數504。在該實例中,所建立的函數504包含源於已識別的共用指令集502的字型執行指令516。
回到第4圖,在408處,定義函數的步驟可包括函數化字型中的共用指令集或用於字型的預程式,其中所建立的函數可定義在字型控制程式中,諸如在fpgm表中。例如,函數可定義(例如,函數化)於字型程式(fpgm)表及/或用於字型的預程式(prep)中。此外,在一個實施例中,所定義的函數可僅函數化於字型程式中的一個位置處,(例如)藉此容許壓縮共用指令集的函數。在一個實施例中,針對共用指令集來定義函數之步驟可包括在字型程式的字型表中產生包含共用指令集的函數。
在一個實施例中,定義函數之步驟可包括針對共用指令集來定義自定義指令。如上所述,自定義函數可包括自定義指令定義函數,該自定義指令定義函數可定義於用於字型的控制程式(例如,fpgm及/或預程式)中。作為實例,自定義指令定義函數可提供於字型平臺中,用於自定義字型,從而增加字型之未來版本的功能。在該實例中,諸如在字型程式表中,未定義的運算碼(例如,共用指令集)可用於定義自定義指令定義函數(例如,IDEF)。
在示例性實施例400中,於410處,可將定義函數的調用插入字型執行指令中。例如,在識別共用指令集的字型執行指令的各個位置處,可用定義於字型程式檔案中的函數的調用替換該共用指令集。在一個實施例中,可用已定義的自定義指令來替換字型執行指令中的共用指令集。此外,各個定義函數或已定義的自定義指令可替換字型執行指令中對應的已識別共用指令集,(例如)藉此減少字型執行指令的大小。
作為說明性實例,在第5圖中,對於字型,壓縮字型執行指令506包括用於字符508、510、512的各個執行指令,其中用定義函數504的調用514替換了共用指令集502。此外,當與第3圖中的未壓縮字型執行指令300比較時,可發現(例如)包括定義函數(例如,在字型程式表中)的執行指令的行數已經從二十五(第3圖中的300)減少到了十九(第5圖中的504及506)。在一個實施例中,例如,當共用指令集存在於更多(例如,多於三個)位置時及/或(例如)對於包括較大數量(例如,運算碼的行數)的執行指令的共用指令集,可顯著提高壓縮率。
在一個態樣中,對共用指令集的識別可用於壓縮多於一個字型。在一個實施例中,在此態樣中,已識別的共用指令集可用於識別用於不同字型的字型執行指令中的共用指令集。例如,對共用指令集的識別可包括蠻力字元搜尋(brute force character search),在蠻力字元搜尋中,選擇各個字元及/或字元集並將該等字元及/或字元集與字型執行指令中的字元進行比較。然而,在本實施例中,各個共用指令集,諸如一或更多字型執行指令中識別的共用指令集,可用作基準搜尋條件,以嘗試識別其他字型中的相同指令集。
例如,可識別第5圖的第一字型中的共用指令集502,且該共用指令集502可用作搜尋條件以與第二字型中的字型執行指令匹配。如此,例如,可藉由從已知的共用指令集開始,減少用於識別字型的共用指令集的時間及/或計算資源成本。
此外,於此態樣之一個實施例中,針對共用指令集定義的函數可用於多於一個字型。在本實施例中,可於用於多於一個字型的字型控制程式中函數化函數(例如,標準函數及/或自定義函數)。作為實例,共用表可由字型控制程式使用,其中共用表包含針對對應共用指令集的一或更多定義函數。如此,例如可藉由減少各個字型的定義函數的數量來進一步壓縮字型執行指令。
在一個態樣中,共用指令集可巢套(nested)於另一個共用指令集中。在此態樣之一個實施例中,可(例如,在字型程式表中)針對第一共用指令集定義第一函數,其中在用於字型的字型執行指令中,第一共用指令集巢套於第二共用指令集內。此外可針對第二共用指令集定義第二函數。在一個實施例中,可用已定義的第一函數的調用替換第一共用指令集,及/或可用已定義的第二函數的調用替換第二共用指令集。
作為實例,可用第二定義函數的第二調用替換第二(經巢套的)共用指令集。此外,在該實例中,第一共用指令集現包含第二定義函數的調用,該第一共用指令集可被稱為第一函數。另外,可用第一函數的調用替換第一共用指令集(例如,該第一共用指令集亦包含第二定義函數的調用)。如此,例如可藉由減少定義函數中指令的數量來進一步壓縮字型執行指令。
可設計用於減少字型執行程式(例如,包含一或更多字型檔案)大小的系統。字型執行程式可包括程式碼及程式表,該等程式碼及程式表用於根據設計者的期望輸出使字符在顯示器上渲染。類似於其他類型的程式碼,字型執行程式的各行可包括關於如何渲染字型的指令。例如,可藉由用針對共用執行指令定義的函數的調用替換相同字型執行指令的部分(該等部份可在程式的若干區域中共用),以減少字型執行指令的數量。
第6圖圖示用於減少用於字型的執行指令的示例性系統600的部件圖。電腦式的處理器602經配置用於處理系統的資料,並且可操作地與共用指令識別部件604耦合。共用指令識別部件604經配置用於識別字型執行指令650中的共用指令集。例如,字型執行指令650可包括指令,諸如程式碼,該指令關於如何渲染字型(例如,藉由掃描場解析器解譯)。此外,字型執行指令650可包括在多於一個位置處相同的指令集,例如該等指令集包含共用指令集。在該實例中,共用指令識別部件604可掃描字型執行指令,以識別一或更多共用指令集。
在示例性系統600中,指令替換部件606可操作地與處理器耦合,並且經配置用於以針對已識別的共用指令集定義的函數的調用替換字型執行指令中的已識別共用指令集。例如,可針對一或更多已識別的共用指令集定義各個函數,並且藉由移除字型執行指令中各處的各個共用指令集並且用對應定義函數的調用替換該等共用指令集,指令替換部件606可建立壓縮字型執行指令652。如此,例如,因為函數調用(用於替換共用指令集)通常比對應的共用指令集要小得多,所以用於字型執行指令的代碼的行數減少。
第7圖為圖示可實施本文描述的一或更多系統的示例性實施例700的部件圖。在本實例700中,提供了對第6圖的擴展,因此為簡便起見,在第6圖中描述的元件、部件等於此不再贅述。在一個實施例中,在字型執行指令750中藉由共用指令識別部件604識別的共用指令集754可包括一或更多共用字型執行指令(例如,共用字符執行指令)的集合,該一或更多共用字型執行指令已在字型執行指令中的複數個位置處經識別。
在該示例性實施例700中,減少決定部件712可經配置用於在壓縮字型執行指令750中的共用指令集754時,決定是否已達到所期望的檔案大小減少臨界值。在一個實施例中,指令替換部件606可經配置用於僅當達到所期望的檔案大小減少臨界值時替換共用指令集754。例如,若減少決定部件712決定用函數的對應調用替換字型執行指令中的一或更多共用指令集使字型檔案減少了所期望的臨界值量,則指令替換部件可執行替換;否則,例如,可不發生壓縮(例如,用調用替換)。
在該示例性實施例700中,至少部分地基於用於字型的指令替換的臨界數量,共用指令優先化部件714可經配置用於在字型執行指令750中優先替換一或更多共用指令集754。例如,字型類型可限制可用於在字型執行指令中替換指令的函數數量。在該實例中,基於共用指令集在字型執行指令中出現的次數及/或共用指令集的長度,共用指令優先化部件714可決定在字型執行指令中可函數化以及替換哪個共用指令集。例如,替換與其他共用指令集相比出現得更頻繁及/或更長的共用指令集通常可引起更大的壓縮。
在該示例性實施例700中,共用指令定義部件710可經配置用於定義針對共用指令集754的函數。在一個實施例中,定義函數可包括標準函數(例如,針對TrueType字型的FDEF函數)及/或自定義指令函數(例如,針對TrueType字型的IDEF函數)。例如,共用指令定義部件710可建立針對已識別的共用指令集的函數,以及在字型執行指令中(例如,在字型程式(fpgm)表中)定義函數。在該實例中,一或更多定義函數的調用可用於替換對應的共用指令集,從而獲得壓縮字型執行指令752。
又一實施例涉及一種包含處理器可執行指令的電腦可讀取媒體,該等處理器可執行指令經配置用於實施本文提供的一或更多種技術。第8圖圖示可用該等方式設計的示例性的電腦可讀取媒體,其中實施方式800包括電腦可讀取媒體808(例如,CD-R、DVD-R,或者硬碟機的盤片),電腦可讀取媒體808上編碼有電腦可讀取資料806。此電腦可讀取資料806又包含電腦指令804的集合,該等電腦指令804的集合經配置用於根據本文闡述的原理中的一或更多原理進行操作。在一個此類實施例802中,例如,處理器可執行指令804可經配置用於執行方法,諸如第1圖的示例性方法100中的至少一些方法。在另一此類實施例中,例如,處理器可執行指令804可配置用於實施系統,諸如第6圖的示例性系統600中的至少一些系統。本領域一般技藝人士可設計許多此類電腦可讀取媒體,此類電腦可讀取媒體經配置用於根據本文提供的技術進行操作。
儘管以專用於結構特徵及/或方法行為之語言描述標的,但應瞭解在附加申請專利範圍中所定義之標的不必限於上文所描述之特定特徵或行為。實情為,將上文所描述之特定特徵及行為揭示為實施申請專利範圍之示例性形式。
如本申請書中所使用的,術語「部件」、「模組」、「系統」、「介面」等通常意欲代表電腦相關的實體,該電腦相關的實體為硬體、硬體和軟體的組合、軟體或執行中的軟體。例如,部件可為(但是不限於)處理器上執行的行程(process)、處理器、物件、可執行程式、執行的線程、程式及/或電腦。舉例而言,控制器上執行的應用程式以及控制器皆為部件。一或更多部件可常駐於行程及/或執行的線程內,並且部件可位於一個電腦上及/或分佈在兩個或兩個以上電腦之間。
此外,所主張標的可實施為方法、裝置、使用標準程式編寫及/或工程技術的製品,以產生軟體、韌體、硬體,或上述各者的組合,以控制電腦實施所揭示的標的。本文使用的術語「製品」意欲包括可從任何電腦可讀取設備、載體或媒體中存取的電腦程式。當然,在不脫離所主張標的的範疇或精神的前提下,本領域熟習此項技藝者將認識到可對本配置進行許多修改。
第9圖及以下論述提供了對適當計算環境的簡要概述,該計算環境適用於實施本文闡述的一或更多調度(provision)的實施例。第9圖的操作環境僅為適當操作環境的一個實例,並且並非意欲對操作環境的使用範疇或功能作出任何限制。示例性計算設備包括(但不限於)個人電腦、伺服器電腦、手持設備或膝上型設備、行動設備(諸如,行動電話、個人數位助理(PDAs)、媒體播放器等)、多處理器系統、消費類電子產品、迷你電腦、主機電腦、包括任何以上系統或設備的分散式計算環境等。
雖然未作要求,但是一般上下文中描述了由一或更多計算設備執行的「電腦可讀取指令」的實施例。電腦可讀取指令可經由(下文論述的)電腦可讀取媒體分佈。電腦可讀取指令可實施為執行特定任務或實施特定抽象資料類型的程式模組,諸如函數、物件、應用程式編寫介面(APIs)、資料結構等。通常,在各種環境中,電腦可讀取指令的功能可按需要組合或分佈。
第9圖圖示包含計算設備912的示例性系統900,該計算設備912經配置用於實施本文提供的一或更多實施例。在一個配置中,計算設備912包括至少一個處理單元916及記憶體918。視計算設備之確切配置及類型而定,記憶體918可為揮發性的(諸如RAM)、非揮發性的(諸如ROM、快閃記憶體等等)或兩者的一些組合。該配置在第9圖中以虛線914圖示。
在其他實施例中,設備912可包括額外的特徵及/或功能。例如,設備912亦可包括額外(例如,可移除及/或非可移除的)儲存器,該儲存器包括但不限於磁性儲存器、光學儲存器等。此類額外儲存器在第9圖中以儲存器920圖示。在一個實施例中,用於實施本文提供的一或更多實施例的電腦可讀取指令可位於儲存器920中。儲存器920亦可儲存其他電腦可讀取指令,該等電腦可讀取指令用於實施作業系統、應用程式等。例如,電腦可讀取指令可載入於記憶體918中,以由處理單元916執行。
本文使用的術語「電腦可讀取媒體」包括電腦儲存媒體。電腦儲存媒體包括以任何方法或技術實施之揮發性及非揮發性、可移除及非可移除媒體,以用於儲存諸如電腦可讀取指令或其他資料之資訊。記憶體918及儲存器920為電腦儲存媒體之實例。電腦儲存媒體包括但不限於RAM、ROM、EEPROM、快閃記憶體或其他記憶體技術、CD-ROM、數位多功能光碟(DVDs)或其他光學儲存器、盒式磁帶、磁帶、磁碟儲存器或其他磁性儲存設備,或可用於儲存所期望資訊並可由設備912存取的任何其他媒體。任何此類電腦儲存媒體可為設備912之部分。
設備912亦可包括通訊連接926,該通訊連接926容許設備912與其他設備通訊。通訊連接926可包括但不限於數據機、網路介面卡(NIC)、整體網路介面、射頻發送器/接收器、紅外線埠、USB連接,或用於將計算設備912連接至其他計算設備的其他介面。通訊連接926可包括有線連接或無線連接。通訊連接926可發送及/或接收通訊媒體。
術語「電腦可讀取媒體」可包括通訊媒體。通訊媒體通常在「調變資料信號」(諸如載波或其他傳送機構)中實施電腦可讀取指令或其他資料,並且通訊媒體包括任何資訊傳遞媒體。術語「調變資料信號」可包括具有一或更多特徵之信號,該等一或更多特徵可經設置或經改變以編碼信號中之資訊。
設備912可包括輸入設備924,諸如鍵盤、滑鼠、輸入筆、語音輸入設備、觸控式輸入設備、紅外攝像機、視訊輸入設備,及/或任何其他輸入設備。設備912亦可包括輸出設備922,諸如一或更多顯示器、揚聲器、印表機及/或任何其他輸出設備。輸入設備924與輸出設備922可經由有線連接、無線連接或兩者之任意組合連接至設備912。在一個實施例中,來自另一計算設備的輸入設備或輸出設備可用作計算設備912的輸入設備924或輸出設備922。
計算設備912的部件可藉由各種互連(諸如,匯流排)來連接。此類互連可包括周邊部件互連(Peripheral component interconnect;PCI),諸如PCI表式(PCI Express)、通用串列匯流排(USB)、火線(IEEE 1394)、光學匯流排結構等。在另一實施例中,計算設備912的部件可藉由網路互連。例如,記憶體918可由多個實體記憶體單元組成,該多個實體記憶體單元位於由網路互連的不同實體位置。
本領域熟習此項技藝者將會認識到用於儲存電腦可讀取指令的儲存設備可分佈於網路上。例如,可經由網路928存取的計算設備930可儲存用於實施本文提供的一或更多實施例的電腦可讀取指令。計算設備912可存取計算設備930並下載部分或所有用於執行的電腦可讀取指令。或者,計算設備912可按需要下載部分電腦可讀取指令,或者可在計算設備912處執行一些指令以及在計算設備930處執行一些指令。
本文提供了實施例的各種操作。在一個實施例中,所描述操作中的一或更多操作可構成儲存於一或更多電腦可讀取媒體上的電腦可讀取指令,若由計算設備執行該等電腦可讀取指令,則會使計算設備執行所描述的操作。描述一些或所有操作的順序不應視為意謂該等操作必須按順序進行。受益於本描述的本領域熟習此項技藝者將瞭解操作順序的可選擇性。此外,應理解並非本文提供的每個實施例都必須包括所有操作。
此外,本文使用的用語「示例性」意謂充當示例、實例或說明。本文描述為「示例性」的任何態樣或設計並非必須視為優於其他態樣或設計。相反,用語「示例性」的使用意欲以具體形式提供概念。如本申請案中所使用的,術語「或」意欲意謂包含性的「或」,而非排他性的「或」。亦即,除非特別指明或從上下文可明確知悉,否則「X使用A或B」意欲意謂任何自然的包含性排列。亦即,若X使用A;X使用B;或X使用A和B兩者,則根據上述實例,「X使用A或B」得以滿足。此外,A和B中的至少一個及/或類似表達通常意謂A或B,或者A和B兩者。此外,本申請案以及附加申請專利範圍中所使用的冠詞「一(a)」以及「一個(an)」通常可視為意謂「一或更多」,除非特別指明或從上下文可明確知悉為單數形式。
又,雖然已用一或更多實施方式圖示和描述了本揭示案,但是在閱讀和理解本說明書和附圖後,本領域熟習此項技藝者亦可進行其他等效變更以及修改。本揭示案包括所有此類修改以及變更,並且本揭示案僅由以下申請專利範圍之範疇限制。尤其是關於由以上所述部件(例如,元件、資源等)執行的各種功能,除非另有敘述,否則雖然在結構上並未等效於執行本文說明的本揭示案的示例性實施方式中的功能的揭示結構,但是用於描述此類部件的術語意欲對應執行所描述部件(例如,所描述部件功能等效)之特定功能的任何部件。此外,儘管已相對於若干實施方式中的僅一個實施方式揭示本揭示案的特定特徵結構,但是如於任何給定或特定的應用可能是期望並且有利的,此特徵結構可與其他實施方式的一或更多其他特徵結構組合。此外,對於用於詳細描述或者申請專利範圍的術語「包括」、「有」、「具有」、「帶有」,或其變體的範圍,此類術語意欲以類似於術語「包含」的方式表示包含性。
100...方法
102...步驟
104...步驟
106...步驟
108...步驟
110...步驟
200...實施例
202...步驟
204...步驟
206...步驟
208...步驟
210...步驟
212...步驟
214...步驟
300...實施例
302...字符
304...字符
306...字符
308...指令集
310...指令集
312...指令集
400...實施例
402...步驟
404...步驟
406...步驟
408...步驟
410...步驟
450...共用指令集
500...實施例
502...共用指令集
504...函數
506...壓縮字型執行指令
508...字符
510...字符
512...字符
514...調用
516...字型執行指令
600...系統
602...電腦式的處理
604...共用指令識別部器件
606...指令替換部件
650...字型執行指令
652...壓縮字型執行
700...實施例指令
710...共用指令定義
712...減少決定部件部件
714...共用指令優先
750...字型執行指令化部件
752...壓縮字型執行
754...共用指令集指令
800...實施方式
802...實施例
804...處理器可執行
806...電腦可讀取資料指令
808...電腦可讀取媒
900...系統體
912...計算設備
914...虛線
916...處理單元
918...記憶體
920...儲存器
922...輸出設備
924...輸入設備
926...通訊連接
928...網路
930...計算設備
第1圖為圖示用於減少用於字型的執行指令的示例性方法的流程圖。
第2圖為圖示可實施本文描述的一或更多種技術的一或更多部分的示例性實施例的流程圖。
第3圖為圖示字型執行指令的示例性實施例的圖式。
第4圖為圖示可實施本文描述的一或更多種技術的一或更多部分的示例性實施例的流程圖。
第5圖為圖示可實施本文描述的一或更多種技術的一或更多部分的示例性實施例的圖式。
第6圖為圖示用於減少用於字型的執行指令的示例性系統的部件圖。
第7圖為圖示可實施本文描述的一或更多系統的示例性實施例的部件圖。
第8圖為示例性電腦可讀取媒體的圖解,該電腦可讀取媒體包含處理器可執行指令,該等處理器可執行指令經配置用於實踐本文闡述的一或更多調度。
第9圖圖示示例性計算環境,其中,可實施本文闡述的一或更多調度。
100...方法
102...步驟
104...步驟
106...步驟
108...步驟
110...步驟
权利要求:
Claims (20)
[1] 一種用於減少用於一字型的字型執行指令的電腦式的方法,該方法包含以下步驟:針對該等字型執行指令中的一已識別的共用指令集定義一函數;以及使用一電腦式的處理器,用該定義函數之一調用替換在該等字型執行指令中的該共用指令集。
[2] 如請求項1所述之方法,該方法包含以下步驟:識別該等字型執行指令中的該共用指令集,其中該共用指令集包含在該等字型執行指令中的至少兩個位置處已識別的一或更多共用執行指令的一集合。
[3] 如請求項2所述之方法,該方法包含以下步驟:使用該已識別的共用指令集來識別用於一不同字型的字型執行指令中的該共用指令集。
[4] 如請求項1所述之方法,該方法包含以下步驟:當壓縮該等字型執行指令中的該共用指令集時,決定是否已達到一期望的檔案大小減少臨界值;以及若已達到該期望的檔案大小減少臨界值,則針對該共用指令集定義該函數。
[5] 如請求項4所述之方法,其中決定是否已達到一期望的檔案大小減少臨界值之步驟包含以下步驟:識別用於減少該等字型執行指令的該大小的一效能成本。
[6] 如請求項1所述之方法,其中定義一函數之步驟包含以下步驟:針對該共用指令集定義一自定義(custom)指令。
[7] 如請求項6所述之方法,該方法包含以下步驟:用該定義的自定義指令替換該等字型執行指令中的該共用指令集。
[8] 如請求項6所述之方法,其中:定義該函數之步驟包含以下步驟:函數化用於該字型的一控制程式中的該共用指令集;以及定義該自定義指令之步驟包含以下步驟:在用於該字型的該控制程式中產生針對該共用指令集的該自定義指令。
[9] 如請求項1所述之方法,其中針對一共用指令集定義一函數之步驟包含以下步驟:函數化用於多於一個字型的一控制程式中之該共用指令集。
[10] 如請求項1所述之方法,該方法包含以下步驟:若已達到指令置換的一臨界數量,則使一第一共用指令集比一第二共用指令集優先壓縮。
[11] 如請求項1所述之方法,該方法包含以下步驟之一:禁止使用針對該共用指令的該函數;以及禁止使用針對該共用指令集的一自定義指令。
[12] 如請求項1所述之方法,該方法包含以下步驟:針對一第一共用指令集定義一第一函數,其中該第一共用指令集包含巢套(nested)在該等字型執行指令中一已識別的第二共用指令集內的一指令集;針對該第二共用指令集定義一第二函數;用該已定義的第一函數的一調用替換該等字型執行指令中的該第一共用指令集;以及用該已定義的第二函數的一調用替換該等字型執行指令中的該第二共用指令集。
[13] 一種用於減少用於一字型的執行指令的系統,該系統包含:一電腦式的處理器,該電腦式的處理器配置用於處理該系統的資料;一共用指令識別部件,該共用指令識別部件可操作地與該處理器耦合,且該共用指令識別部件經配置用於識別該等字型執行指令中的一共用指令集;以及一指令替換部件,該指令替換部件可操作地與該處理器耦合,且該指令替換部件經配置用於用針對該已識別的共用指令集的一函數的一調用替換該等字型執行指令中的該共用指令集。
[14] 如請求項13所述之系統,其中該共用指令集包含在該等字型執行指令中的複數個位置處已識別的一或更多共用執行指令的一集合。
[15] 如請求項13所述之系統,該系統包含一減少決定部件,該減少決定部件經配置用於在當壓縮該等字型執行指令中的該共用指令集時,決定是否已達到一期望的檔案大小減少臨界值。
[16] 如請求項15所述之系統,其中該指令替換部件經配置用於僅當達到該期望的檔案大小減少臨界值時,替換該共用指令集。
[17] 如請求項13所述之系統,該系統包含一共用指令優先化部件,該共用指令優先化部件經配置用於至少部分地基於用於該字型的指令置換的一臨界數量,在該等字型執行指令中優先置換一或更多共用指令集。
[18] 如請求項13所述之系統,該系統包含一共用指令定義部件,該共用指令定義部件經配置用於針對該共用指令集定義該函數。
[19] 如請求項13所述之系統,其中該定義函數包含以下各項之一:一標準函數;以及一自定義指令函數。
[20] 一種包含電腦可執行指令的電腦可讀取媒體,其中當經由一處理器在一電腦上執行該等電腦可執行指令時,執行一種用於減少用於一字型的執行指令的一大小的方法,該方法包括以下步驟:識別該等字型執行指令中的一共用指令集,其中該共用指令集包含在該等字型執行指令中的至少兩個位置處已識別的一或更多共用執行指令的一集合;當壓縮該等字型執行指令中的該共用指令集時,決定是否已達到一期望的檔案大小減少臨界值;針對在該等字型執行指令中已識別的一共用指令集定義一函數,其中若已達到該期望的檔案大小減少臨界值,則該函數包含以下各項之一:一標準函數,該標準函數定義於用於該字型的一控制程式中;以及一自定義指令函數,該自定義指令函數定義於用於該字型的該控制程式中;以及用該定義函數之一調用替換該等字型執行指令中的該共用指令集。
类似技术:
公开号 | 公开日 | 专利标题
TWI536262B|2016-06-01|減少字型指令
US9898266B2|2018-02-20|Loop vectorization methods and apparatus
US10884744B2|2021-01-05|System and method of loop vectorization by compressing indices and data elements from iterations based on a control mask
US9147123B2|2015-09-29|System and method to perform feature detection and to determine a feature score
US10007605B2|2018-06-26|Hardware-based array compression
US8831364B2|2014-09-09|Information processing apparatus for determining matching language for characters in image
US20100306300A1|2010-12-02|Sparse Matrix Padding
US9841953B2|2017-12-12|Pluggable components for runtime-image generation
JP2015007972A|2015-01-15|画像照合方法、画像照合装置、モデルテンプレート生成方法、モデルテンプレート生成装置、およびプログラム
RU2616164C2|2017-04-12|Способы и устройство для работы браузерного движка
US20130057554A1|2013-03-07|Consolidating glyphs of a font
JP2019125353A|2019-07-25|電子文書中の文字列塊を推測する方法
CN111078279A|2020-04-28|字节码文件的处理方法、装置、设备及存储介质
CN113031952A|2021-06-25|深度学习模型的执行代码的确定方法、装置及存储介质
Kushsairy et al.2016|Embedded vision: Enhancing embedded platform for face detection system
JP5478936B2|2014-04-23|情報処理装置、情報処理方法
JP6453685B2|2019-01-16|演算制御装置、演算制御方法及び演算制御プログラム
JP5617674B2|2014-11-05|文書間類似度算出装置、文書間類似度算出方法、及び、文書間類似度算出プログラム
US20210295158A1|2021-09-23|End-to-end optimization
JP2009175797A|2009-08-06|コンパイル方法及びコンパイラプログラム
CN112115105A|2020-12-22|一种业务处理方法、装置及设备
JP2019028942A|2019-02-21|情報処理装置、および情報処理プログラム
JP5181821B2|2013-04-10|画像処理装置、画像処理方法、プログラム
CN105144139A|2015-12-09|生成特征集
CN110780983A|2020-02-11|任务异常处理方法、装置、计算机设备以及存储介质
同族专利:
公开号 | 公开日
EP2740029B1|2017-05-17|
TWI536262B|2016-06-01|
EP2740029A4|2015-12-02|
JP2014527644A|2014-10-16|
US20130033498A1|2013-02-07|
EP2740029A1|2014-06-11|
CN103827817B|2016-05-11|
KR20140049546A|2014-04-25|
KR101867127B1|2018-06-12|
CN103827817A|2014-05-28|
JP6038916B2|2016-12-07|
WO2013019254A1|2013-02-07|
US8947438B2|2015-02-03|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
JPS6319040A|1986-07-11|1988-01-26|Nec Corp|Information processor|
JP3442089B2|1992-04-15|2003-09-02|株式会社リコー|アウトラインフォントファイルを使用したアウトラインフォントの形成方法|
US5583978A|1994-05-27|1996-12-10|Bitstream Inc.|Apparatuses and methods for creating and using portable fonted texts with embedded automatically-created font descriptions|
JPH09134157A|1995-11-09|1997-05-20|Fujitsu Ltd|ヒント付け方法及びフォントファイル構成方法|
JPH09265397A|1996-03-29|1997-10-07|Hitachi Ltd|Vliw命令用プロセッサ|
KR0172581B1|1996-04-02|1999-03-30|이진기|단계적 표현 가능형 폰트 그 변환 방법 및 렌더링 방법|
US6678410B1|1999-02-17|2004-01-13|Adobe Systems Incorporated|Generating a glyph|
US6426751B1|1999-04-01|2002-07-30|Adobe Systems Incorporated|Font feature file processing|
US7184046B1|1999-09-28|2007-02-27|Monotype Imaging Inc.|Method and apparatus for font storage reduction|
US20020118885A1|2001-02-27|2002-08-29|Bernard Smeets|Font compression and retrieval|
KR100539056B1|2001-07-12|2005-12-27|네오퍼스|폰트의 손실 압축 및 저장 방법|
US7006108B2|2003-03-25|2006-02-28|Mitsubishi Electric Research Laboratories, Inc.|Method for generating a composite glyph and rendering a region of the composite glyph in image-order|
SE0301548D0|2003-05-26|2003-05-26|Anoto Ab|on-demand printing of coding patterns|
EP1631898A1|2003-05-26|2006-03-08|Anoto IP Lic HB|Method for compressinga digital representation containing a page-describing code, which is sent from a computer to a printer|
US7187382B2|2004-01-26|2007-03-06|Microsoft Corporation|Iteratively solving constraints in a font-hinting language|
US7710422B2|2004-07-26|2010-05-04|Microsoft Corporation|Font representations|
US20060170684A1|2005-01-28|2006-08-03|Microsoft Corporation|Font cache and meta-fonts|
JP3863544B1|2005-07-07|2006-12-27|富士通株式会社|演算処理装置及び演算処理方法|
JP4770425B2|2005-11-24|2011-09-14|富士ゼロックス株式会社|保護済み実行プログラムの作成のためのプログラム、方法及び装置|
US7719537B2|2006-08-22|2010-05-18|Monotype Imaging Inc.|Method for reducing size and increasing speed for font generation of instructions|
CN101246449B|2008-02-25|2011-08-10|华为技术有限公司|跟踪函数调用轨迹的方法和装置|
US9245361B2|2011-09-01|2016-01-26|Microsoft Technology Licensing, Llc|Consolidating glyphs of a font|US9319444B2|2009-06-22|2016-04-19|Monotype Imaging Inc.|Font data streaming|
US8615709B2|2010-04-29|2013-12-24|Monotype Imaging Inc.|Initiating font subsets|
US9245361B2|2011-09-01|2016-01-26|Microsoft Technology Licensing, Llc|Consolidating glyphs of a font|
US9311896B2|2012-02-27|2016-04-12|Microsoft Technology Licensing, Llc|Glyph rendering|
US9817615B2|2012-12-03|2017-11-14|Monotype Imaging Inc.|Network based font management for imaging devices|
WO2014100582A2|2012-12-21|2014-06-26|Monotype Imaging Inc.|Supporting color fonts|
US9626337B2|2013-01-09|2017-04-18|Monotype Imaging Inc.|Advanced text editor|
US9317777B2|2013-10-04|2016-04-19|Monotype Imaging Inc.|Analyzing font similarity for presentation|
US9547628B2|2013-10-31|2017-01-17|Adobe Systems Incorporated|Method and apparatus for improving text legibility by automatically adjusting zoom level based on preferred font characteristics including height, weight, and condensation|
JP6000992B2|2014-01-24|2016-10-05|京セラドキュメントソリューションズ株式会社|文書ファイル生成装置及び文書ファイル生成方法|
US9691169B2|2014-05-29|2017-06-27|Monotype Imaging Inc.|Compact font hinting|
JP6618246B2|2014-09-30|2019-12-11|キヤノン株式会社|情報処理装置、表示方法、及びコンピュータプログラム|
US10115215B2|2015-04-17|2018-10-30|Monotype Imaging Inc.|Pairing fonts for presentation|
US10606587B2|2016-08-24|2020-03-31|Micron Technology, Inc.|Apparatus and methods related to microcode instructions indicating instruction types|
US10909429B2|2017-09-27|2021-02-02|Monotype Imaging Inc.|Using attributes for identifying imagery for selection|
法律状态:
2019-03-01| MM4A| Annulment or lapse of patent due to non-payment of fees|
优先权:
申请号 | 申请日 | 专利标题
US13/195,232|US8947438B2|2011-08-01|2011-08-01|Reducing font instructions|
[返回顶部]